//#include<stdio.h>
//#include<unistd.h>
//#include<stdlib.h>
//#include<sys/types.h>
//#include<sys/wait.h>
//
//
//int main()
//{
//    pid_t pid = fork();
//    if(pid == 0)
//    {
//        int count = 3;
//        while(count--)
//        {
//            printf("子进程正在运行中，pid = %d\n", getpid());
//            sleep(1);
//        }
//        exit(0);
//    }
//    int status = 0;
//    pid_t ret_pid = waitpid(pid, &status, 0);
//    if(ret_pid > 0)
//    {
//        printf("wait success\n");
//        if(WIFEXITED(status))
//        {
//            printf("运行正常结束: %d\n", WIFEXITED(status));
//        }
//        else
//        {
//            printf("运行异常了\n");
//        }
//    }
//
//    return 0;
//}


#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/wait.h>
#include"Tool.hpp"
#include"Task.hpp"


int main()
{
    Tool tool;
    tool.PushFunc(DownLoad);
    tool.PushFunc(PrintLog);
    tool.PushFunc(FlushData);

    pid_t pid = fork();
    if(pid == 0)
    {
        int count = 10;
        while(count--)
        {
            printf("子进程运行中：%d\n", count);
            sleep(1);
        }
        exit(0);
    }
    
    
    while(1)
    {
        pid_t ret_pid = waitpid(pid, NULL, WNOHANG);
        if(ret_pid > 0)
        {
            printf("wait success\n");
            break;
        }
        else if(ret_pid == 0)
        {
            printf("child not quit\n");
            tool.Execute();
            sleep(1);
        }
        else
        {
            printf("wait failed\n");
            break;
        }
    }

    return 0;
}
